Clang/GCC weirdness

Consider the following code: #include #include using namespace std; // base template template struct what_type { void operator()() { cout